
// Comprueba si una caracter es alfanumerico
function isAlphanumeric(character){
	var alphanumeric = true;
	
	if(!isDigit(character) && !isLowerCase(character) && !isUpperCase(character)){
		alphanumeric = false;
	}
	
	return alphanumeric;
}

// Comprueba si un caracter es un numero
function isDigit(character){
	var charCode = character.charCodeAt(0);
	return (charCode >= 48 && charCode <= 57);
}

// Comprueba si un caracter es una letra minuscula
function isUpperCase(character){
	var charCode = character.charCodeAt(0);
	return (charCode >= 65 && charCode <= 90);
}

// Comprueba si un caracter es una letra mayuscula
function isLowerCase(character){
	var charCode = character.charCodeAt(0);
	return (charCode >= 97 && charCode <= 122);
}

function checkUserContent(cadena){
	var valid;
	if(cadena.length >= 3 && cadena.length <= 15){
		valid = true;
		for(var i = 0; i < cadena.length && valid; i++){
			if(!isAlphanumeric(cadena[i])){
				valid = false;
			}
		}
	}else{
		valid = false;
	}
	return valid;
}

function checkPassContent(cadena){
	var valid;
	if(cadena.length >= 6 && cadena.length <= 15){
		valid = true;
		var numCount = 0;
		var minCount = 0;
		var mayCount = 0;
		
		for(var i = 0; i < cadena.length && valid; i++){
			if(isDigit(cadena[i])){
				numCount++;
			}else if(isLowerCase(cadena[i])){
				minCount++;
			}else if(isUpperCase(cadena[i])){
				mayCount++;
			}else if(cadena[i] != '_'){
				valid = false;
			}
		}

		if(valid){
			valid = numCount >= 1 && minCount >= 1 && mayCount >= 1;
		}
	}else{
		valid = false;
	}
	return valid;
}

// Comprueba si el email es correcto
function checkEmail(cadena){

	var atpos = cadena.indexOf("@");
	if(atpos != cadena.lastIndexOf("@"))
		return false;
	var dotpos = cadena.lastIndexOf(".");
	if (atpos < 1 || dotpos < atpos + 2 || dotpos + 2 >= cadena.length || dotpos + 5 < cadena.length){
		return false;
	}
	return true;
}

// Comprueba si hay un sexo seleccionado
function checkSex(){
	var hom = document.getElementById("sexRegH");
	var muj = document.getElementById("sexRegM");
	
	return hom.checked || muj.checked;
}

function checkDate(cadena){

	var valid = true;
	var numerosInd = new Array();
	numerosInd = cadena.split('/');
	
	if(numerosInd.length != 3){
		numerosInd = cadena.split('-');
		if(numerosInd.length != 3){
			return -1;
		}
	}
	
	if(valid){
		var fechaDate = new Date(cadena);
		
		if(numerosInd[1] != fechaDate.getDate()
		  || numerosInd[0] != (fechaDate.getMonth() + 1)
		  || numerosInd[2] != fechaDate.getFullYear()){
		  return 0;
		}else{
			return 1;
		}
	}
	
	return valid;
}

// Detecta si una cadena esta compuesta de solo 
function isSpaces(cadena){
	var allSpaces = true;
	for(var i = 0; i < cadena.length; i++){
		if(cadena[i] != ' ' && cadena[i] != '\t'){
			allSpaces = false;
		}
	}	
	return allSpaces;
}

// Comprueba que los campos del login sean correctos
function validateLogin(){

	var correcto = true;
	
	var loginText = document.getElementById('userLogin').value;
	var passText = document.getElementById('passLogin').value;

	// Compruebo el user
	if(loginText == "" || isSpaces(loginText)){
		// Mostrar Error
		document.getElementById('errLogin').innerHTML = "El campo no puede estar vacio";
		correcto = false;
	}else{
		document.getElementById('errLogin').innerHTML = "";
	}	
		
	// Compruebo el password
	if(passText == "" || isSpaces(passText)){
		// Mostrar Error
		document.getElementById('errPass').innerHTML = "El campo no puede estar vacio";
		correcto = false;
	}else{
		document.getElementById('errPass').innerHTML = "";
	}	
		
	return correcto;
}

// Comprueba que los campos del registro sean correctos
function validateRegistration(){

	var valid = true;
	
	// Compruebo el usuario
	var userText = document.getElementById('userReg').value;
	if(userText == ""){
		document.getElementById('errUser').innerHTML = "El campo no puede estar vacio.";
		valid = false;
	}else if(checkUserRegexp(userText)){
		document.getElementById('errUser').innerHTML = "";
	}else{
		document.getElementById('errUser').innerHTML = "El campo no es correcto.";
		valid = false;
	}
	
	// Compruebo la contraseña
	var passText = document.getElementById('passReg').value;
	if(passText == ""){
		document.getElementById('errPassReg').innerHTML = "El campo no puede estar vacio.";
		valid = false;
	}else if(checkPassRegexp(passText)){
		document.getElementById('errPassReg').innerHTML = "";
	}else{
		document.getElementById('errPassReg').innerHTML = "El campo no es correcto.";
		valid = false;
	}
	
	// Compruebo la contraseña repetida
	var pass2Text = document.getElementById('pass2Reg').value;
	if(pass2Text == ""){
		document.getElementById('errPass2').innerHTML = "El campo no puede estar vacio.";
		valid = false;
	}else if(pass2Text == passText){
		document.getElementById('errPass2').innerHTML = "";
	}else{
		document.getElementById('errPass2').innerHTML = "Las contraseñas no coinciden.";
		valid = false;
	}
	
	// Compruebo el email
	var emailText = document.getElementById('emailReg').value;
	if(emailText == ""){
		document.getElementById('errEmail').innerHTML = "El campo no puede estar vacio.";
		valid = false;
	}else if(checkEmailRegexp(emailText)){
		document.getElementById('errEmail').innerHTML = "";
	}else{
		document.getElementById('errEmail').innerHTML = "El campo no es correcto.";
		valid = false;
	}

	// Compruebo sexo
	if(checkSex()){
		document.getElementById('errSexo').innerHTML = "";
	}else{
		document.getElementById('errSexo').innerHTML = "Debes seleccionar un campo.";
		valid = false;
	}
	
	// Compruebo la fecha
	var dateText = document.getElementById('nacReg').value;
	if(dateText == ""){
		document.getElementById('errFecha').innerHTML = "El campo no puede estar vacio.";
		valid = false;
	}else if(checkDateRegexp(dateText)){
		document.getElementById('errFecha').innerHTML = "";
	}else{
		document.getElementById('errFecha').innerHTML = "La fecha no es correcta.";
		valid = false;
	}
	
	return valid;
}

function checkUserRegexp(cadena){
	var patt = /^[a-zA-Z0-9]{3,15}$/;
	
	return patt.test(cadena);
}

function checkPassRegexp(cadena){
	var hasDigit = /.*[0-9].*/;
	var hasLower = /.*[a-z].*/;
	var hasUpper = /.*[A-Z].*/;
	
	var patt = /^[a-zA-Z0-9_]{6,15}$/;
	
	return patt.test(cadena) && hasDigit.test(cadena) && hasLower.test(cadena) && hasUpper.test(cadena);
}

function checkEmailRegexp(cadena){
	var patt = /^[A-Z0-9._-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i;
	
	return patt.test(cadena);
}

function checkDateRegexp(cadena){

	var patt = /^(19|20)\d\d([-\/])(0[1-9]|1[012])\2(0[1-9]|[12][0-9]|3[01])$/;
	
	return patt.test(cadena);
}